home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
SGI Developer Toolbox 6.1
/
SGI Developer Toolbox 6.1 - Disc 4.iso
/
public
/
SciAn
/
src
/
ScianScrDump.c
< prev
next >
Wrap
C/C++ Source or Header
|
1994-08-01
|
2KB
|
129 lines
/*ScianScrDump.c
Eric Pepke
May 22, 1991
Screen dump pseudorecorder*/
#include "Scian.h"
#include "ScianTypes.h"
#include "ScianWindows.h"
#include "ScianIDs.h"
#include "ScianScrDump.h"
#include "ScianRecorders.h"
static long curFrame = 0;
static ObjPtr ReturnTrue(object)
ObjPtr object;
/*Returns true*/
{
return ObjTrue;
}
static ObjPtr PrepareToRecordScrDump(object, nFrames)
ObjPtr object;
long nFrames;
/*Prepares to record nframes*/
{
curFrame = 0;
return ObjTrue;
}
static ObjPtr SnapOneFrameScrDump(object)
ObjPtr object;
/*Do a screen dump of arbitrary size*/
{
int l, b, r, t, w, h;
ObjPtr var;
var = GetVar(object, FRAMEOX);
if (var)
{
l = GetInt(var);
}
else
{
l = 0;
}
var = GetVar(object, FRAMEOY);
if (var)
{
b = GetInt(var);
}
else
{
b = 0;
}
var = GetVar(object, FRAMEWIDTH);
if (var)
{
w = GetInt(var);
}
else
{
w = 0;
}
var = GetVar(object, FRAMEHEIGHT);
if (var)
{
h = GetInt(var);
}
else
{
h = 0;
}
r = l + w - 1;
t = b + h - 1;
if (GetPredicate(object, SAVEWINDOWFRAME))
{
l -= WINBL;
r += WINBR;
b -= WINBB;
t += WINBT;
}
do
{
++curFrame;
sprintf(tempStr, "screen%04d.rgb", curFrame);
} while (fopen(tempStr, "r"));
SetVar(object, FILENAME, NewString(tempStr));
sprintf(tempStr, "scrsave screen%04d.rgb %d %d %d %d",
curFrame, l, r, b, t);
system(tempStr);
return ObjTrue;
}
#ifdef PROTO
void InitScrDump(void)
#else
void InitScrDump()
#endif
/*Create a new screen dump ersatz recorder*/
{
ObjPtr recorder;
recorder = NewRecorder(NULLOBJ, "scrsave", "IRIS rgb");
SetMethod(recorder, CONNECT, ReturnTrue);
SetMethod(recorder, DISCONNECT, ReturnTrue);
SetMethod(recorder, PREPARETORECORD, PrepareToRecordScrDump);
SetMethod(recorder, STOPRECORDING, ReturnTrue);
SetMethod(recorder, SNAPONEFRAME, SnapOneFrameScrDump);
SetVar(recorder, FRAMESOURCE, NewInt(FS_WINDOW));
SetVar(recorder, ENABLEDSOURCES, NewInt(FB_SCREEN + FB_WINDOW));
RegisterRecorder(recorder);
}
#ifdef PROTO
void KillScrDump(void)
#else
void KillScrDump()
#endif
{
}